package spring.spring_blog.common.utils;


import cn.hutool.crypto.digest.DigestUtil;

import java.util.UUID;

/**
 * 加密和加盐
 * 目的是防止的是被拖库之后密码直接就能被使用
 * 那么前端返回密码
 * 后端随机生成一个32位的盐，把他和32位和盐加载一起最终加密获得一个字符串，然后把盐和字符串拼接起来储存在数据库中
 * md5加密
 */
public class SecurityUtil {

    public static String encrypt(String password) {
        //每次都获得一个随机的盐 长度是固定的32位
        String salt = UUID.randomUUID().toString().replace("-", "");

        System.out.println("salt=" + salt + " saltLength:" + salt.length());

        //将这俩个合在一起加密
        String finalPassword = DigestUtil.md5Hex(salt + password);
        System.out.println("最终的密文" + finalPassword);

        return salt + finalPassword;
    }


    public static boolean verify(String password, String finalPassword) {
        String salt = finalPassword.substring(0, 32);
        System.out.println("verify salt = " + salt);

        //使用同一个加密方式加密
        String md5Password = DigestUtil.md5Hex(salt + password);
        System.out.println("verify = " + md5Password);

        return (salt+md5Password).equals(finalPassword);
    }

}